package cn.net.dpi.util;

import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;

/**
 * 作用：加密解密<br>
 * 说明：(无)
 *
 * @author 曹祥商
 * @Date 2019年05月05日 14:48
 */
public class CryptionKit {

    /**
     * 【作用】生成初始密码<br>
     * 【说明】系统用户密码
     * @param
     * @author 曹祥商
     * @Date 2018/1/4 17:14
     */
    public static String genUserPwd() {
        return DigestUtil.md5Hex("123456");
    }


    /**
     * 生成并加密密码
     * @param pwd
     * @return
     */
    public static String md5(String pwd) {
        if (StrUtil.isEmpty(pwd)) {
            return genUserPwd();
        }
        return DigestUtil.md5Hex(pwd);
    }

    /**
     * 生成密码所需要的盐
     * @return
     */
    public static String getSalt(){
            return RandomStringUtils.randomAlphabetic(64);
    }


    public static final String salt(String salt,String password){
        //加密方式
        String hashName = "MD5";
        //盐
        ByteSource byteSource = ByteSource.Util.bytes(salt);
        //密码
        Object source = password;
        //加密次数
        int hashTterations = 1;
        SimpleHash result = new SimpleHash(hashName,source,byteSource,hashTterations);
        return result.toString();
    }

}
